#ifndef TFTP_SERVER_H
#define TFTP_SERVER_H
#include<string>
#include<string.h>
#include<myhead.h>
using namespace std;

//创建服务器类
class TFTPServer{
private:
    //在函数内部声明，但生命周期贯穿整个程序运行期 的特殊变量。
    static const int PORT = 6666;
    static const int BUFFER_ZISE = 516;

    int sfd;
    struct sockaddr_in server_addr;
    string root_dir;

    //处理客户端的请求函数
    //const char *filename：要发送给客户端的文件名
    //client_addr:客户端地址信息结构体
    //addr_len:地址信息结构体大小
    //处理读请求
    void handleReadRequest(const char* filename ,struct sockaddr_in &clinent_addr,socklen_t addr_len);

    //char *filename：将客户端发来的数据存储到的文件
    //client_addr:客户端地址信息结构体
    //addr_len:地址信息结构体大小
    //处理写请求
    void handleWriteRequest(const char *filename,struct sockaddr_in &client_addr ,socklen_t addr_len);


    //const char * msg：要发送给客户端的错误信息
    //client_addr:客户端地址信息结构体
    //addr_len:地址信息结构体大小
    void sendError(const char* msg,struct sockaddr_in &clinent_addr);
public:
    TFTPServer(const string &root = ".");
    ~TFTPServer();
    void run();

};

#endif


